#ifndef __IDRIVER_H__
#define __IDRIVER_H__

#include "CTypes.h"
#include "CColor.h"
#include "UsefulData.h"
#include "ISceneManager.h"

class IImage;
class ITexture;

class IDriver
{
protected:
	u32 FPS;
	u32 ActualFPS;
	u32 Time;
	CColor BackColor;

public:
	IDriver():FPS(0),ActualFPS(0),Time(0)																								{}
	virtual ~IDriver()																												{}

    virtual void SetBackColor(CColor Color)																						= 0;
	virtual void BeginRender()																										= 0;
	virtual void EndRender()																										= 0;
	virtual vector2dvpos GetPositionIn2D(const vector2dvpos &Position)																= 0;
	virtual vPos GetPositionIn2DX(vPos PosX)																						= 0;
	virtual vPos GetPositionIn2DY(vPos PosY)																						= 0;

	inline u32 GetFPS() { return FPS; }
};

POWERLIBRARYENGINE_API IDriver *GetVideoDriver();
POWERLIBRARYENGINE_API void DeleteVideoDriver();
void SetVideoDriver(IDriver *nv);
#define VideoDriver		GetVideoDriver()

#endif
